# -*- coding: utf-8 -*-
"""
Created on 2021-10-13 00:45:32
---------
@summary: 爬虫入口
---------
@author: 大龙
"""

from feapder import ArgumentParser

import spiders.cs_spider_interface
from spiders.ggglxy_spider import GgglxySpider

from spiders import *
import sys
import os


def crawl_scunews(args):
    """
    BatchSpider爬虫
    """
    spider = ggglxy_spider.GgglxySpider(
        redis_key="scunews:batch_spider",  # redis中存放request等信息的根key
        task_table="spider_t_task",  # mysql中的任务表
        batch_record_table="spider_t_batch_record",  # mysql中的批次记录表
        batch_name="公共管理学院信息爬虫",  # 批次名字
        batch_interval=7,  # 批次时间 天为单位 若为小时 可写 1 / 24
        task_keys=["id", "url", "type","source","acadamyUrl"],  # 需要获取任务表里的字段名，可添加多个
        task_state="state",  # mysql中任务状态字段
    )

    # 调试用
    # spider.init_task()
    # spider_cs.init_task()

    if args == 1:
        spider.start_monitor_task()
    elif args == 2:
        spider.start()
    elif args == 3:
        spider.init_task()

def crawl_cs(args):
    spider_cs = spiders.cs_spider_interface.CsSpiderInterface(
        redis_key="scunews:batch_spider_cs",  # redis中存放request等信息的根key
        task_table="spider_t_task_cs",  # mysql中的任务表
        batch_record_table="spider_t_batch_record",  # mysql中的批次记录表
        batch_name="cs,sw,jwc信息爬虫",  # 批次名字
        batch_interval=7,  # 批次时间 天为单位 若为小时 可写 1 / 24
        task_keys=["id", "url", "type","source","acadamyUrl"],  # 需要获取任务表里的字段名，可添加多个
        task_state="state"  # mysql中任务状态字段
    )
    spider_cs.init_task()
    if args == 1:
        spider_cs.start_monitor_task()
    elif args == 2:
        spider_cs.start()
    elif args == 3:
        spider_cs.init_task()


def scunews_debug():
    spider = ggglxy_spider.GgglxySpider.to_DebugBatchSpider(
        task_id=11,
        redis_key="scunews:batch_spider",  # redis中存放request等信息的根key
        task_table="spider_t_task",  # mysql中的任务表
        batch_record_table="spider_t_batch_record",  # mysql中的批次记录表
        batch_name="公共管理学院信息爬虫",  # 批次名字
        batch_interval=7,  # 批次时间 天为单位 若为小时 可写 1 / 24
        task_keys=["id", "url", "type","source","acadamyUrl"],  # 需要获取任务表里的字段名，可添加多个
        task_state="state",  # mysql中任务状态字段
    )

    spider.start()

def cs_debug():
    spider=spiders.cs_spider_interface.CsSpiderInterface.to_DebugBatchSpider(
        task_id=5,
        redis_key="scunews:batch_spider",  # redis中存放request等信息的根key
        task_table="spider_t_task_cs",  # mysql中的任务表
        batch_record_table="spider_t_batch_record",  # mysql中的批次记录表
        batch_name="cs,sw,jwc信息爬虫",  # 批次名字
        batch_interval=7,  # 批次时间 天为单位 若为小时 可写 1 / 24
        task_keys=["id", "url", "type","source","acadamyUrl"],  # 需要获取任务表里的字段名，可添加多个
        task_state="state",  # mysql中任务状态字段
    )
    spider.start()


if __name__ == "__main__":
    parser = ArgumentParser(description="四川大学信息爬虫")

    parser.add_argument(
        "--crawl_scunews", type=int, nargs=1, help="(1|2）", function=crawl_scunews
    )
    parser.add_argument(
        "--scunews_debug", action="store_true", help="四川大学信息爬虫", function=scunews_debug
    )
    parser.add_argument(
        "--cs_debug", action="store_true", help="计软爬虫调试", function=cs_debug
    )

    parser.add_argument(
        "--crawl_cs", type=int, nargs=1, help="(1|2）", function=crawl_cs
    )

    parser.start()

    # BatchSpider运行方式
    # 1. 下发任务：python main.py --crawl_xxx 1
    # 2. 采集：python main.py --crawl_xxx 2
    # 3. 重置任务：python main.py --crawl_xxx 3
